package utils

import (
	"fmt"
	"net/http"

	"github.com/dchest/captcha"
	"github.com/gin-gonic/gin"
)

// 全局变量，用于存储验证码ID
var captchaId = captcha.New()

// 生成验证码图片

func GenerateCaptchaImage(c *gin.Context) {
	// 生成新的验证码ID
	captchaId = captcha.New()
	// 设置响应头为图片内容类型
	c.Writer.Header().Set("Content-Type", "image/png")
	// 将验证码图片写入响应体
	captcha.WriteImage(c.Writer, captchaId, 240, 80)
	// 打印图片验证码ID
	fmt.Println("图片验证码ID:", captchaId)

}

// 验证验证码
func VerifyCaptcha(c *gin.Context) {
	// 绑定请求体
	var request struct {
		CaptchaInput string `json:"captchaInput"`
	}
	if err := c.ShouldBindJSON(&request); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": "请求错误"})
		return
	}
	// 获取用户输入的验证码
	userCaptcha := request.CaptchaInput
	// 打印验证码ID和用户输入的验证码
	fmt.Printf("captchaId: %v\n", captchaId)
	fmt.Printf("userCaptcha: %v\n", userCaptcha)
	// 验证验证码
	if captchaId != "" && captcha.VerifyString(captchaId, userCaptcha) {
		c.JSON(http.StatusOK, gin.H{"message": "验证码正确"})
	} else {
		c.JSON(http.StatusUnauthorized, gin.H{"message": "验证码错误"})
	}
}

// 主函数
// func main() {
// 	// 谁他妈需要cookie，不需要
// 	r := gin.Default()

// 	// 生成验证码图片
// 	r.GET("/captcha", GenerateCaptchaImage)
// 	// 验证验证码
// 	r.POST("/verify", VerifyCaptcha)

// 	r.Run(":8080")
// }
